/*

This file is part of roomyak.

Copyright (C) 2008 Pixecur Technologies Incorporated (Esotera).
Visit Esotera at http://www.esoteras3.com
 
roomyak is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
 
roomyak is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with roomyak; see the file COPYING.  If not, write to 
Pixecur Technologies, 213-31 Peet Street, St. John's, NL, A1B 3W8. 
 
Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
 
*/

package com.datasentinel.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * @author rickp
 * 
 */
public class DefaultFileBuilder implements FileBuilder
{
	@Override
	public boolean delete(File file)
	{
		boolean deleted=false;
		if (null != file)
		{
			return file.delete();
		}
		return deleted;
	}
	@Override
	public File fileHome() throws IOException
	{
		return new File(System.getProperty("user.home"));
	}
	
	@Override
	public File build(String name) throws IOException
	{
		if (name == null)
			return fileHome();
		return new File(name);
	}

	@Override
	public File build(File file, String name) throws IOException
	{
		return new File(file, name);
	}

	@Override
	public boolean exists(File file, String name) throws IOException
	{
		return new File(file, name).exists();
	}

	@Override
	public InputStream buildFileInputStream(File file) throws IOException
	{
		return new FileInputStream(file);
	}

	@Override
	public OutputStream buildFileOutputStream(File file) throws IOException
	{
		return new FileOutputStream(file);
	}
	@Override
	public FileMapping createMapping(File file) throws IOException
	{
		throw new IOException("Unimplemented");
	}
	@Override
	public File unmap(FileMapping fileMapping) throws IOException
	{
		throw new IOException("Unimplemented");
	}
	@Override
	public File getRoot(File file) throws IOException
	{
		return new File(".");
	}
	@Override
	public File getDefaultRoot() throws IOException
	{
		return new File(".");
	}
}
